package com.welike.shibo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.welike.shibo.eneity.Video;
import com.welike.shibo.vo.VideoInfoListVO;
import com.welike.shibo.vo.page.VideoPageVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created by fangyu on 2019-08-18.
 */
public interface VideoMapper extends BaseMapper<Video> {

    // 查询首页视频列表(分页)
    List<VideoPageVo> selectIndexPage(Page<VideoPageVo> page);

    // 查询首页不包含uid的视频列表(分页) => 不包含uid =>自己
    List<VideoPageVo> selectIndexPageNotInUserId(Page<VideoPageVo> page, @Param("userId")String userId);

    // 查询包含uid的视频列表(分页) => 包含uid => 关注的人
    IPage<VideoPageVo> selectVideoInfoVOInUserIdList(Page<VideoPageVo> page, @Param("uidList")List uidList);

    // 查询指定用户发布的视频
    IPage<Video> selectUidVideoInfoPage(Page<Video> page, @Param("uid")String uid);

    // 查询视频(vid)赞的次数
    Integer queryLikeCountsById(@Param("id")String vid);

    // 查询用户(userId)发布了多少个视频
    Integer countByUserId(@Param("userId")String uid);

    // 查询用户(userId)收获了多个赞(视频)
    Integer sumForLikeCountsByUserId(@Param("userId")String uid);

    // 查询视频分享的次数
    Integer queryShareCountsById(@Param("id")String id);

    // 查询视频总数
    Integer countByVideo();

    IPage<VideoInfoListVO> selectVideoPageVo(Page<VideoInfoListVO> page);

    // 查询同城视频列表(分页)
    IPage<VideoPageVo> queryCityVideo(Page<VideoPageVo> page, @Param("city") String city);

    // 查询热门视频列表(分页)
    IPage<VideoPageVo> queryHotVideo(Page<VideoPageVo> page);

    // 通过视频id查询作者id
    String queryUserIdById(@Param("id")String id);

    // 更新视频状态
    int updateStatusById(@Param("updatedStatus")Integer updatedStatus,@Param("id")String id);

//    List<Video> searchVideo(@Param("key")String key);
    List<Video> searchVideo(@Param("page")int page, @Param("pageSize")int pageSize, @Param("key")String key);

    List<String> findVideoIdByUid(@Param("uid") String uid);

    // 通过vid 查询封面
    String queryCoverPathById(@Param("id")String id);

    // 通过vid 查询简介
    String queryVideoDescById(@Param("id")String id);

    // 通过vid 查询视频URL
    String queryVideoUrlById(@Param("id")String id);

}